package day5;

import java.util.ArrayList;
import java.util.Scanner;

/*
    1.什么是类，什么是对象，两者之间有什么关联。
    将现实生活中真实事物抽象成了代码,使用自定义的数据类型来描述现实生活中的事物。
    2.什么是成员变量，什么是局部变量，有什么区别。

     区别一：定义的位置不同
         定义在类中的变量是成员变量
         定义在方法中或者{}语句里面的变量是局部变量
     区别二：在内存中的位置不同
         成员变量存储在堆内存的对象中
         局部变量存储在栈内存的方法中
     区别三：生命周期不同
         成员变量随着对象的出现而出现在堆中，随着对象的消失而从堆中消失
         局部变量随着方法的运行而出现在栈中，随着方法的弹栈而消失
      区别四：初始化不同
         成员变量因为在堆内存中，所以有默认的初始化值
         局部变量没有默认的初始化值，必须手动的给其赋值才可以使用。
     3.
     (1)声明一个日期类，包含属性年月日，属性私有。
     (2)声明人员信息类，包含属性姓名，生日，身份证号；其中生日的数据类型是声明的日期类型，属性私有。
     (3)存储人员相关信息，并遍历相关信息。
     (4)在日期类中创建方法，判断是否输入的年份为为闰年。

    4.声明一个三角形类，包含属性三条边，类中包含以下三种方法
        (1)判断是否是一个直角三角形
        (2)判断是否是一个等腰三角形
        (3)判断是否是一个等边三角形
        (4)求周长
* */
public class Demo4Exercise {
    public static void main(String[] args) {
        //创建集合,接收人员信息对象
        ArrayList<Demo5Message3_2> message = new ArrayList<>();

        //创建一个信息对象
//        Demo5Message3_2 mes1 = new Demo5Message3_2();
        addMessage(message);
        showMessageInfo(message);

    }
//    存储
    public static void addMessage(ArrayList<Demo5Message3_2> message){
        //创建Scanner对象，接收输入的信息
        Scanner sc = new Scanner(System.in);
        //创建一个信息对象
        Demo5Message3_2 mes1 = new Demo5Message3_2();
        System.out.println("输入姓名:");
        mes1.name = sc.next();
        System.out.println("输入生日:");
        mes1.setBirthday();
        System.out.println("输入身份证号:");
        mes1.idNumber = sc.next();
        message.add(mes1);
        System.out.println(mes1.getBirthday());
    }
    //遍历
    public static void showMessageInfo(ArrayList<Demo5Message3_2> message){
        for (int i = 0; i < message.size(); i++) {
            System.out.println("姓名:"+message.get(i).name+"生日:"+message.get(i).getBirthday()+"身份证号:"+message.get(i).idNumber);
        }
    }
}
